# 引入外部静态库
# 方法一
# 打印信息
message(STATUS "src This is BINARY dir " ${PROJECT_BINARY_DIR})
message(STATUS "src This is SOURCE dir " ${PROJECT_SOURCE_DIR})
message(STATUS "src This is CMAKE dir " ${CMAKE_SOURCE_DIR})

# 定义工程根目录; CMAKE_SOURCE_DIR为内建变量，表示工程根目录的CMakeLists.txt文件路径
SET(ROOT_DIR ${CMAKE_SOURCE_DIR})

# 指定头文件搜索路径
INCLUDE_DIRECTORIES(${ROOT_DIR}/3rdlib)

# 指定引用的外部静态库或者动态库的搜索路径
LINK_DIRECTORIES(${ROOT_DIR}/3rdlib)

# 指定可执行文件存放目录
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)

# 查找目录下的所有源文件 并将名称列表保存到DIR_SRC 变量中
# (它会查找目录下的.c,.cpp ,.mm,.cc 等等C/C++语言后缀的文件名)
aux_source_directory(${ROOT_DIR}/src_static DIR_SRC)

# 构建可执行程序
ADD_EXECUTABLE(sample7 ${DIR_SRC})
# 指定要连接的静态库，必须要有，第二个参数也可以换成math，那么将自动去搜索libmath.a或者libmath.so或者libmath.dyld动态库
TARGET_LINK_LIBRARIES(sample7 libmath.a)

# 方法二
# 打印信息
#message(STATUS "src This is BINARY dir " ${PROJECT_BINARY_DIR})
#message(STATUS "src This is SOURCE dir " ${PROJECT_SOURCE_DIR})
#
## 定义工程根目录; CMAKE_SOURCE_DIR为内建变量，表示工程根目录的CMakeLists.txt文件路径
#SET(ROOT_DIR ${CMAKE_SOURCE_DIR})
#
## 指定头文件搜索路径
#INCLUDE_DIRECTORIES(${ROOT_DIR}/3rdlib)
#
## 以导入外部库的方式(不会重新编译)重新构建一个静态库libMath
#add_library(libMath STATIC IMPORTED)
## 设置要导入的外部静态库的路径
#set_target_properties(libMath PROPERTIES IMPORTED_LOCATION ${ROOT_DIR}/3rdlib/libmath.a)
#
## 指定可执行文件存放目录
#SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
#
## 构建可执行程序
#ADD_EXECUTABLE(sample7 main.cpp)
## 注意这里连接的库名为新构建的库名libMath而外部库libmath
#TARGET_LINK_LIBRARIES(sample7 libMath)
# 这里是先根据外部静态库重新构建一个libMath静态库，然后可执行程序连接到该库
